package com.example.studentmanager.mapper;

import com.example.studentmanager.model.vo.QueryVo;
import com.example.studentmanager.model.Student;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import java.sql.SQLException;
import java.util.List;



@Component
@Mapper
public interface StudentMapper {
    /**
     * 将学生对象添加到数据表student中
     *
     * @param s 学生对象
     * @return 添加成功返回1，添加失败返回0
     * @throws SQLException
     */
    int addStudent(Student s) throws SQLException;

    /**
     * 根据学生的学号，删除表student中对应的记录
     *
     * @param stunum 学生的学号
     * @return 删除成功返回1，没有删除返回0
     * @throws SQLException
     */
    int deleteStuById(Integer stunum) throws SQLException;

    /**
     * 用Student对象更新表student中对应的记录
     *
     * @param s 学生对象
     * @return 更新成功返回1，没有更新返回0
     * @throws SQLException
     */
    int updateStu(Student s) throws SQLException;

    /**
     * 查询student表中的所有学生
     *
     */

    Integer counts(@Param("col") String searchCol, @Param("val") String searchValue);

    List<Student> searchAll(@Param("start") Integer start, @Param("rows") Integer rows, @Param("col") String searchCol, @Param("val") String searchValue) throws SQLException ;

    /**
     * 根据给定的学号、姓名等进行模糊查询所有符合条件的学生
     *
     * @return 返回所有符合查询条件的学生，没有找到则返回长度为0的空列表
     * @throws SQLException
     */
    List<Student> search(String id, String name, String classname) throws SQLException;

    /**
     * 根据学号，查询学生
     *
     * @param stunum 学号
     * @return 找到则返回1个学生对象，没找到返回null
     * @throws SQLException
     */
    Student selectStudentByStunum(int stunum) throws SQLException;
    List<Student> selectStudentByStuname(String stuname) throws SQLException;
    List<Student> selectByids(QueryVo queryVo);
    List<Student> selcetStuCourse();
    List<Student>  blurSelectStudent(Student student);
}
